package com.mazaiting.redeye.utils

import com.mazaiting.log.L
import java.text.SimpleDateFormat
import java.util.*

/***
 *
 *
 *                                                    __----~~~~~~~~~~~------___
 *                                   .  .   ~~//====......          __--~ ~~
 *                   -.            \_|//     |||\\  ~~~~~~::::... /~
 *                ___-==_       _-~o~  \/    |||  \\            _/~~-
 *        __---~~~.==~||\=_    -_--~/_-~|-   |\\   \\        _/~
 *    _-~~     .=~    |  \\-_    '-~7  /-   /  ||    \      /
 *  .~       .~       |   \\ -_    /  /-   /   ||      \   /
 * /  ____  /         |     \\ ~-_/  /|- _/   .||       \ /
 * |~~    ~~|--~~~~--_ \     ~==-/   | \~--===~~        .\
 *          '         ~-|      /|    |-~\~~       __--~~
 *                      |-~~-_/ |    |   ~\_   _-~            /\
 *                           /  \     \__   \/~                \__
 *                       _--~ _/ | .-~~____--~-/                  ~~==.
 *                      ((->/~   '.|||' -_|    ~~-/ ,              . _||
 *                                 -_     ~\      ~~---l__i__i__i--~~_/
 *                                 _-~-__   ~)  \--______________--~~
 *                               //.-~~~-~_--~- |-------~~~~~~~~
 *                                      //.-~~~--\
 *                               神兽保佑
 *                              代码无BUG!
 * @author mazaiting
 * @date 2019-08-01
 * @description 时间工具类
 */
object TimeUtil {
    /**
     * 毫秒
     */
    private const val MILLI_SECOND = 1L
    /**
     * 秒
     */
    private const val SECOND = 1000 * MILLI_SECOND
    /**
     * 分
     */
    private const val MINUTE = 60 * SECOND
    /**
     * 3 分钟
     */
    private const val MINUTE_TWO = 2 * MINUTE
    /**
     * 3 分钟
     */
    private const val MINUTE_THREE = 3 * MINUTE
    /**
     * 时
     */
    private const val HOUR = 60 * MINUTE
    /**
     * 1 天
     */
    private const val DAY = 24 * HOUR
    /**
     * 2 天
     */
    private const val DAY_TWO = 2 * DAY
    /**
     * 3 天
     */
    private const val DAY_THREE = 3 * DAY

    /**
     * 获取时间
     * yyyy-MM-dd HH:mm:ss.SSS
     * @param time 时间
     * @return 时间字符串
     */
    fun getTime(time: Long): String {
        // 获取当前时间与传入时间差
        val different = System.currentTimeMillis() - time
        // 创建格式化工具
        val format = SimpleDateFormat("yyyy-MM-dd HH:mm:ss.SSS", Locale.CHINA)
        format.format(Date(time))
//        L.d("different: $different, time: ${format.format(Date(time))}, currentTimeMillis: ${format.format(Date(System.currentTimeMillis()))}")
        return if (isNow(Date(time))) {
            when {
//                different > HOUR -> {
//                    "1小时前"
//                }
                different > MINUTE_THREE -> {
//                    "3分钟前"
                    // 创建格式化工具
                    val dateFormat = SimpleDateFormat("HH:mm", Locale.CHINA)
                    dateFormat.format(Date(time))
                }
                different > MINUTE_TWO -> "2分钟前"
                different > MINUTE -> "1分钟前"
                else -> ""
            }
        } else {
            when {
                different > DAY_THREE -> {
                    // 创建格式化工具
                    val dateFormat = SimpleDateFormat("yyyy-MM-dd", Locale.CHINA)
                    dateFormat.format(Date(time))
                }
                different > DAY_TWO -> "前天"
                else -> "昨天"
            }
        }
    }

    /**
     * 判断时间是不是今天
     * @param date
     * @return    是返回true，不是返回false
     */
    private fun isNow(date: Date): Boolean {
        val sf = SimpleDateFormat("yyyyMMdd", Locale.CHINA)
        //获取今天的日期
        val nowDay = sf.format(Date())
        //对比的时间
        val day = sf.format(date)

        return day == nowDay
    }

}